package com.texaco.chapasFutbol.entidades;

import org.andengine.entity.sprite.Sprite;
import org.andengine.extension.physics.box2d.PhysicsFactory;
import org.andengine.opengl.texture.region.ITextureRegion;
import org.andengine.opengl.vbo.VertexBufferObjectManager;

import com.badlogic.gdx.physics.box2d.Body;
import com.badlogic.gdx.physics.box2d.BodyDef.BodyType;
import com.badlogic.gdx.physics.box2d.FixtureDef;

/**
 * Clase que implementa los sprites que vamos a utilizar en nuestro juego de
 * chapas y futbol Las subclases deben de ser, chapas, pelota... (básicamente
 * cualquier objeto que se mueva en nuestro juego. Contendra las cosas comunes
 * que requieran nuestros sprites, tales como atlas, o fisicas.
 * 
 * @author texaco
 * 
 */
public class CFSprite extends Sprite {

	private Body body;
	protected Game game;

	/*
	 * TODO: SON VALORES PROPIOS DE LAS CHAPAS O DE LAS PELOTAS Y POR LO TANTO
	 * HABRÍA QUE MOVERLOS AL LUGAR CORRESPONDIENTE.
	 */
	private final static FixtureDef fixture = PhysicsFactory.createFixtureDef(
			0f, 0.5f, 0.5f);
	private final static FixtureDef fixturePelota = PhysicsFactory
			.createFixtureDef(0f, 1f, 0f);

	public CFSprite(int xPos, int yPos, ITextureRegion shape,
			VertexBufferObjectManager vertex, Game game, float damping) {

		super(xPos, yPos, shape, vertex);
		this.game = game;
		if (this instanceof Pelota) {
			body = PhysicsFactory.createCircleBody(game.getPhysicsWorld(),
					this, BodyType.DynamicBody, fixturePelota);

		} else { // chapa
			body = PhysicsFactory.createCircleBody(game.getPhysicsWorld(),
					this, BodyType.DynamicBody, fixture);

		}
		// body.setLinearVelocity(new Vector2(0, 0));

		/*
		 * Antes de incluir las chapas en el mundo físico, le modificamos el
		 * valor 'Damping' para que el efecto rebote sea menor.
		 */
		body.setLinearDamping(damping);
		// chapasActivity.getPhysicsWorld().registerPhysicsConnector(
		// new PhysicsConnector(this, body, true, true));
	}

	public Body getBody() {
		return this.body;
	}

	public void mover(float diferenceX, float diferenceY) {
		body.setLinearVelocity(diferenceX, diferenceY);
	}
}
